package io.gitee.xyuesheng.day07;

import org.junit.Test;

import java.io.File;
import java.io.IOException;

public class TestFile {
    @Test
    public void test() {
        //[复制、剪切]、创建目录、创建新文件、判断文件是否存在
        //读文件的信息（不是内容）：文件大小、时间、文件路径

    }

    //创建文件、目录
    @Test
    public void testCreate() throws IOException {
        //内存里面创建了一个文件对象
        File file = new File("D:\\test.md");

        //需要处理异常（I/O），1：耗时 2：容易出问题
        boolean created = file.createNewFile();
        System.out.println(created);


        //目录和文件都是用File对象封装
        File folder = new File("D:\\abc");
        boolean success = folder.mkdir();//make directory
        System.out.println(success);

        File longFoloder = new File("D:\\abce\\bc\\c");
        longFoloder.mkdirs();//创建多级目录

        System.out.println(file.exists());
        System.out.println(folder.exists());
        System.out.println(longFoloder.exists());
        System.out.println(new File("D:\\def").exists());

    }


    @Test
    public void testRelativePath() {
        //相等当前项目
        File f = new File("src\\io\\gitee\\xyuesheng" +
                "\\day07\\TestFile.java");
        System.out.println();

        //\转义字符
        File f2 = new File("data\\scores2.csv");

    }


    @Test
    public void testFileIterator() {
        File folder = new File("src\\io\\gitee\\" +
                "xyuesheng\\day06");

        File[] files = folder.listFiles();
        for (File file : files) {
//            System.out.println(file);
            /**
             * file.getPath() 相对路径
             * file.getAbsolutePath() 绝对路径
             * file.getName() 文件名
             */
            System.out.println(file.getAbsolutePath() + "#" +
                    file.getName() + "#" + file.length() + "#" +
                    file.lastModified());

            if (file.isDirectory()) {
                System.out.println("这是一个目录。。");
            }

        }

    }

    //递归的遍历一个目录
    @Test
    public void testFileIterator2() {
        String dir = "D:\\RJ\\java\\src";
//        String dir=".\\";//当前目录

        long start = System.currentTimeMillis();

        listDirectory(new File(dir));

        long end = System.currentTimeMillis();

        System.out.println("耗时" + (end - start));

    }

    //传入一个目录，返回目录下面的子目录和文件
    public void listDirectory(File file) {
        File[] files = file.listFiles();
        for (File f : files) {
            System.out.println(f.getAbsolutePath());
            if (f.isDirectory()) {//是目录
                listDirectory(f);
                System.out.print("目录***");
            }
        }
    }

}
